---
title: RectangleSelect 框选
icon: SquareDashedMousePointer
relatedFile: app/src/core/service/controlService/rectangleSelectEngine/rectangleSelectEngine.tsx
---

这是一个用于处理图形界面中“框选”操作的服务。它允许用户通过拖动鼠标（或在Mac上通过特定手势）来选择屏幕上的对象。该服务独立于具体的输入方式，提供了一套统一的API来管理框选的开始、移动和结束，并根据框选的区域和方向来选择实体和边。

### `getSelectStartLocation(): Vector`

获取当前框选的起始点坐标。

### `getSelectEndLocation(): Vector`

获取当前框选的结束点坐标。

### `getRectangle(): Rectangle | null`

获取当前正在进行的框选矩形对象。如果当前没有进行框选，则返回 `null`。

### `shutDown()`

关闭框选功能，清除当前正在进行的框选矩形。

### `startSelecting(worldLocation: Vector)`

开始一个新的框选操作。传入框选的起始世界坐标。此方法会根据当前按键状态（如Shift或Control/Meta键）决定是否取消已有的选择，并初始化框选矩形和起始/结束位置。

### `moveSelecting(newEndLocation: Vector)`

在框选过程中移动鼠标（或手势），更新框选的结束点。此方法会实时更新框选矩形的大小和位置，并根据框选方向和限制区域（如果存在）调整框选范围。同时，它会根据框选模式（包含或相交）更新被选中的舞台对象。

### `endSelecting()`

结束当前的框选操作。此方法会将所有在本次框选中被选中的实体和边添加到“上次选择”的记录中，并清除当前的框选矩形。

### `getSelectMode(): "contain" | "intersect"`

获取当前框选的模式。根据框选的方向（从左到右或从右到左）返回“包含”或“相交”模式，这决定了对象被选中所需的条件。
